home *** CD-ROM | disk | FTP | other *** search
- /* @(#)walkmenu_impl.h 1.1 86/02/04 SMI */
-
- /***********************************************************************/
- /* walkmenu_impl.h */
- /* Copyright (c) 1985 by Sun Microsystems, Inc. */
- /***********************************************************************/
-
- #ifndef walkmenu_impl_DEFINED
- #define walkmenu_impl_DEFINED
-
- #include <suntool/walkmenu.h>
- #include "image_impl.h"
-
- #define TRUE 1
- #define FALSE 0
- #define NULL 0
-
- #define Pkg_private
- #define Pkg_extern extern
- #define Private static
-
- #define imax(a, b) ((int)(b) > (int)(a) ? (int)(b) : (int)(a))
- #define range(v, min, max) ((v) >= (min) && (v) <= (max))
-
- #define menu_attr_next(attr) (Menu_attribute *)attr_next((caddr_t *)attr)
- #define MENU_FILLER 5
-
- /***********************************************************************/
- /* Structures */
- /***********************************************************************/
-
- /*
- * Fields: default_position, selected_position and image are not validated
- * and must be checked before each usage.
- */
-
- /*********** Menu **********/
-
- struct menu {
- struct menu_ops_vector *ops;
- int default_position; /* Default item */
- int selected_position; /* Last selected item */
- /* Values are: default, selected, nth item */
- Menu_attribute initial_selection; /* Initial presentation */
- Menu_attribute default_selection; /* Default presentation */
- int height; /* in pixels, zero implies best fit */
- int width; /* in pixels */
- struct pixrect *shadow_pr; /* Draw shadow with this pattern */
- int (*feedback_proc)(); /* NYI */
- caddr_t (*notify_proc)();
- struct menu *(*gen_proc)(); /* Dynamically generate menu */
- /* Handler for item select, calls menu item proc */
- struct image default_image; /* Font, max size, etc. */
- struct menu *stack_menu; /* NYI - Stacking menu (sibling) */
- int pullright_delta; /* Distance(pixels) to bring up menu*/
- caddr_t client_data; /* Client''s use */
-
- /* Flags */
- unsigned allow_accelerated_selection:1; /* NYI */
- unsigned display_one_level:1; /* Limit initial selection */
- unsigned stand_off:1; /* Don''t selected item */
- unsigned valid_result:1; /* True if m->value is valid */
- unsigned jump_after_selection:1; /* If true then jump */
- unsigned jump_after_no_selection:1; /* If true then jump */
- unsigned free_everything:1; /* Not used */
- unsigned free_menu:1; /* Not used */
- unsigned free_shadow_pr:1; /* Not used */
- unsigned free_client_data:1; /* Not used */
-
- /* Auxiliary fields */
- int nitems; /* Number of items */
- int max_nitems; /* Size of item list */
- int ncols;
- int nrows;
- struct menu_item **item_list;
- struct menu_info *dynamic_info; /* Holds dynamic info for show() */
- struct menu_item *parent; /* Last pullright item */
-
-
-
- };
-
-
- /*********** Menu item **********/
-
- struct menu_item {
- struct menu_ops_vector *ops;
- struct image *image;
- struct menu_item *(*gen_proc)(); /* Called before displaying item */
- struct menu *(*gen_pullright)();/* Called before displaying menu */
- caddr_t (*notify_proc)(); /* Called only when selected */
- caddr_t value; /* union: value, menu_ptr */
- caddr_t client_data;
- struct menu *parent; /* Current enclosing menu */
-
- /* Flags */
- unsigned inactive:1;
- unsigned no_feedback:1;
- unsigned pullright:1;
- unsigned selected:1;
- unsigned free_everything:1; /* Not used */
- unsigned free_item:1;
- unsigned free_value:1; /* Not used */
- unsigned free_client_data:1; /* Not used */
-
- };
-
-
- /*********** Menu ops **********/
-
- struct menu_ops_vector {
- caddr_t (*menu_get_op)();
- int (*menu_set_op)();
- void (*menu_destroy_op)();
- };
-
-
- /*********** Menu info **********/
-
- struct menu_info {
- struct inputevent *first_iep;
- struct inputevent *last_iep;
- int depth;
- caddr_t (*notify_proc)();
- };
-
- #endif ~walkmenu_impl_DEFINED
-